package com.chris.code.generate.android;

import com.chris.assist.builders.android.mvpp.supports.AndroidMvppBuildManager;
import com.chris.assist.config.Config;
import com.chris.code.generate.manager.LocalTestConfigBuilder;

import java.time.Instant;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;

/**
 * @author Chris Chan
 * Create On 2025/9/26 下午2:50
 * Use for: Android页面资源创建示例
 * Explain:
 */
public class AndroidMvppPageBuildTest {
    private static final String templateRootPath = "G:\\Dev\\products\\retro-products\\companies\\stone\\projects\\cup\\assist\\vtl";

    public static void main(String[] args) {
        // 1. 获取配置
        Config config = LocalTestConfigBuilder.create().get();
        // 2. 创建页面
        buildMvppFragmentPages(config);
    }

    /**
     * 创建Mvpp页面资源
     * 一次性综合处理
     *
     * @param config
     */
    private static void buildMvppPage(Config config) {
        // 1. 创建管理器
        AndroidMvppBuildManager manager = AndroidMvppBuildManager.get(config);

        // 2. 创建页面
        manager.createActivities("common/act", "HttpTest1", "HttpTest2");
        manager.createFragments("common/fra", "Tab1", "Tab2");
        // 3. 打印和保存创建结果 建议每次都修改文件名，避免覆盖之前的结果
        manager.printPageBuildResultInfo()
                .savePageBuildResultInfoAsProject(generateBuildResultFileName());
    }

    /**
     * 创建Mvpp Activity页面资源
     *
     * @param config
     */
    private static void buildMvppActivityPages(Config config) {
        // 1. 创建管理器
        AndroidMvppBuildManager manager = AndroidMvppBuildManager.get(config);

        // 2. 创建页面
        manager.createActivities("common/act", "BuildTest2", "BuildTest3");
        // 3. 打印和保存创建结果 建议每次都修改文件名，避免覆盖之前的结果
        manager.printPageBuildResultInfo()
                .savePageBuildResultInfoAsProject(generateBuildResultFileName());
    }

    /**
     * 创建Mvpp Fragment页面资源
     *
     * @param config
     */
    private static void buildMvppFragmentPages(Config config) {
        // 1. 创建管理器
        AndroidMvppBuildManager manager = AndroidMvppBuildManager.get(config);

        // 2. 创建页面
        manager.createFragments("tabs/main", "Cate", "order","message");
        // 3. 打印和保存创建结果 建议每次都修改文件名，避免覆盖之前的结果
        manager.printPageBuildResultInfo()
                .savePageBuildResultInfoAsProject(generateBuildResultFileName());
    }

    /**
     * 生成构建结果文件名
     *
     * @return
     */
    private static String generateBuildResultFileName() {
        return "docs/build-" +
                Instant.now()
                        .atOffset(ZoneOffset.of("+8"))
                        .format(DateTimeFormatter.ofPattern("yyyy-MM-dd-HHmmss")) +
                ".md";
    }

}
